// 基本思路： 用两个指针，left指向字符串开始位置，right指向字符串结束位置，如果不是字母或者数字通过left右移或者right左移过滤
// 判断两个值是否相等

// 时间复杂度：O(n)
// 空间复杂度：O(n)
function isPalindrome(str) {
    let arr = str.replace(/[^a-zA-Z0-9]/g, '').replace(/\s/g, '').toLowerCase().split('')
    let left = 0
    let right = arr.length - 1
    while (left < right) {
        if (arr[left] === arr[right]) {
            left += 1
            right -= 1
        } else {
            return false
        }
    }
    return true
}
let str = 'A man, a plan, a canal: Panama'
console.log(isPalindrome(str));